/*!
\file
	BasicDataTypesInfo.h
\brief
	Declaration of BasicDataTypeInfo.
\details
\bug
	none
\todo
	none
\date
	January 20, 2008 - first version of the file.
	March 16, 2008 - add "void" data type.
\author
	Copyright (C) 2008 Vadym Hulakov, mailto:hulakov@gmail.com. All rights reserved.
*/

#ifndef BASICDATATYPEINFO_H
#define BASICDATATYPEINFO_H

#include "Type.h"

namespace ObjectModel
{
	//! Description of basic data types.
	class BasicType : public Type
	{
	private:
		friend class TypeHierarchy;

		//! Constructor
		//! @param [in] name
		//!		Name of the data type.
		//! @param [in] description
		//!		Description of the data type.
		//! @param [in] size
		//!		Size of the data type.
		BasicType(const wchar_t* name, const TypeHierarchy& manager, int size)
			: _size(size), Type(name, manager, L"")
		{
		}

	public:
		//! @name Overloads
		virtual bool isBasic() const { return true; }
		virtual int getSize() const { return _size; }
		//@}

	private:
		//! Size of the basic data type
		const int _size;
	};
}

#endif // BASICDATATYPEINFO_H